home *** CD-ROM | disk | FTP | other *** search
-
- function units_ltransport_setup()
- units_setup(3,false,ENET_EFFECT_PS_SETUPSMOKE_LARGE,ENET_EFFECT_GEOMETRY_LANDTRANSPORTSHADOW)
- end
-
- function units_ltransport_resetup()
- units_setup(3,false,nil,ENET_EFFECT_GEOMETRY_LANDTRANSPORTSHADOW)
- end
-
- function units_ltransport_select()
- units_select(22)
- end
-
- function units_ltransport_unselect()
- units_unselect()
- end
-
- function units_ltransport_selectenemy()
- uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
- end
-
- function units_ltransport_damaged()
- uniGetExecutor():applyDamage(uniGetLife())
- end
-
- function units_ltransport_highlight()
- uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
- end
-
- function units_ltransport_explode()
- units_explode_big1()
- end
-
- function units_ltransport_move()
- local unit = uniGetExecutor()
- local sound = unit:play3DSound("landtransport_move.wav",1)
- local steps = {}
- local i = 0;
- for i = 0,1 do
- steps[i] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_DYNAMICGEOMETRY_LIGHTTANKSTEPSEMITTER)
- steps[i+2] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_PS_NEWTRACKSMOKE2)
- end
- waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 1.0))
- waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,100))
- sound:destroy()
- unit:play3DSound("landtransport_stop.wav",0):destroy()
- for i = 0,1 do
- if(unit:getScale() < 1.0) then
- steps[i]:destroy()
- else
- steps[i]:setTransformOwner()
- steps[i]:suspendedDestroy(70)
- end
- steps[i+2]:suspendedDestroy(1.0)
- end
- end
-
- function units_ltransport_fire()
- end
-
- function units_ltransport_load()
- local unit = uniGetExecutor()
- local cargo = uniGetTarget()
- units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
- waitDeath(unit:parabolicTargetting(cargo))
- unit:play3DSound("Cargo_open2.wav",0):destroy()
- unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
- unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
- unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
- cargo:setVisibility(true,false)
- uniSetPosition(unit:getBone(ENBT_FIRE1):getWorldPosition())
- units_load_shrink(cargo)
- local ground = units_addGround(unit,ENET_LTRANSPORT_GROUND)
- local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
- cargo:terminateCommand()
- cargo:executeCommand(ENC_INSIDE,true)
- while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
- cargo:setTransformOwner(units_findfreefirespot(unit,1))
- unit:setCurrentAnimationRepeatCount(0)
- cargo:setVisibility(false,false)
- cargo:terminateCommand()
- end
-
- function units_ltransport_unload()
- local unit = uniGetExecutor()
- local cargo = uniGetTarget()
- units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
- local pos = uniGetPosition()
- waitDeath(unit:parabolicTargetting(pos))
- unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
- unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
- unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
- local ground = units_addGround(unit,ENET_LTRANSPORT_GROUND)
- cargo:setLocalOrientation(0,1,0,0,0,-1)
- cargo:setTransformOwner()
- cargo:setScale(0.4,0.4,0.4)
- cargo:setVisibility(true,false)
- local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
- cargo:terminateCommand()
- cargo:executeCommand(ENC_INSIDE,true)
- while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
- units_unload_growth(cargo)
- cargo:setVisibility(true,true)
- unit:setCurrentAnimationRepeatCount(0)
- cargo:terminateCommand()
- end
-
- function units_ltransport_transfer()
- local unit = uniGetExecutor()
- local cargo = uniGetTarget()
- units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
- local from = cargo:getTransformOwner():getTransformOwner()
- local fromType = from:getEffectType()
- units_waitCommandByUID(from,unit:getCurrentCommandUID() - 2)
- if(fromType == ENET_UNIT_PLATFORM) then
- waitDeath(from:parabolicTargetting(unit))
- from:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
- from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
- from:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
- local ground = units_addGround(from,ENET_PLATFORM_GROUND)
- cargo:setTransformOwner()
- units_ltransport_load()
- from:setCurrentAnimationRepeatCount(0)
- from:terminateCommand()
- elseif(fromType == ENET_UNIT_LANDTRANSPORT or fromType == ENET_UNIT_SEATRANSPORT) then
- waitDeath(from:parabolicTargetting(unit))
- from:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
- from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
- from:addAnimationToQueue(ENAT_AFTERFIRE1,1)
- local g_type = ENET_STRANSPORT_GROUND
- if(fromType == ENET_UNIT_LANDTRANSPORT) then g_type = ENET_LTRANSPORT_GROUND end
- local ground = units_addGround(from,g_type)
- cargo:setLocalOrientation(0,1,0,0,0,-1)
- cargo:setTransformOwner()
- cargo:setScale(0.4,0.4,0.4)
- units_ltransport_load()
- from:setCurrentAnimationRepeatCount(0)
- from:terminateCommand()
- elseif(fromType == ENET_UNIT_TRANSCHOPPER_HUMAN) then
- waitDeath(from:parabolicTargetting(unit))
- cargo:setTransformOwner()
- units_ltransport_load()
- from:setCurrentAnimationRepeatCount(0)
- from:terminateCommand()
- else
- consoleWrite("attempt to reload from unknown transport type!!!")
- end
- end
-
-
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_MOVE,"units_ltransport_move")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_FIRE1,"units_ltransport_fire")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_FIRE2,"units_ltransport_fire")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_SELECT,"units_ltransport_select")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_SELECTENEMY,"units_ltransport_selectenemy")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_UNSELECT,"units_ltransport_unselect")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_SETUP,"units_ltransport_setup")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_RESETUP,"units_ltransport_resetup")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_DAMAGED,"units_ltransport_damaged")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_EXPLODE,"units_ltransport_explode")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_HIGHLIGHT,"units_ltransport_highlight")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_TRANSFER,"units_ltransport_transfer")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_LOAD,"units_ltransport_load")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_UNLOAD,"units_ltransport_unload")
- registerCommand(ENSCRIPTSET_LANDTRANSPORT,ENC_INSIDE,"units_inside")
-
- -- make description of unit
- desc = getEffectDescriptionP(ENET_UNIT_LANDTRANSPORT)
- desc.ClassID = ENCLASS_MESHINSTANCE
- desc.EffectClassType = ENECT_GEOMETRY
- desc.FileName = "landtransport.rmd"
- desc.ScriptSet = ENSCRIPTSET_LANDTRANSPORT
- desc.MoveType = ENMOVE_GROUNDORIENTED
- desc.RenderType = ENRENDERTYPE_GEOMETRY
- desc.Material = ENMAT_RIGIDSKINNEDMESH
- desc.MaterialColors = units_materialcolors_human
- desc.isPlacesVisible = false
-
- -- shadow
- desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_LANDTRANSPORTSHADOW)
- desc.ClassID = ENCLASS_MESHINSTANCE
- desc.EffectClassType = ENECT_GEOMETRY
- desc.FileName = "landtransport_shadow.rmd"
- desc.RenderType = ENRENDERTYPE_SHADOW
- desc.Material = ENMAT_SHADOW
- desc.MaterialColors = units_materialcolors_shadow
-
- -- register new unit to logic
- unitDesc = logic_getUnitDescP(6)
- unitDesc.group = 0
- unitDesc.order = 10
- unitDesc.unit_res_id = ENET_UNIT_LANDTRANSPORT
- unitDesc.unit_icon_id = "Landtransport_h_small_normal.dds"
- unitDesc.active_id = "Landtransport_h_small_active.dds"
- unitDesc.pressed_id = "Landtransport_h_small_pressed.dds"
- unitDesc.big_icon_id = "Landtransport_h_big_normal.dds"
- unitDesc.small_icon_id = "Landtransport_u_stats.dds"
- unitDesc.HP = 3
- unitDesc.MP = 50
- unitDesc.WR = 0
- unitDesc.min_WR = 0
- unitDesc.WD = 0
- unitDesc.WR2 = 0
- unitDesc.min_WR2 = 0
- unitDesc.WD2 = 0
- unitDesc.ability = 1
- unitDesc.transport = 2
- unitDesc.value = 2
- unitDesc.race = 0
- unitDesc.fire_pause = 0.0
- unitDesc.move_pause = 6.0
- unitDesc.unit_info_scale = 0.06
- unitDesc.scn_name = "LTRANSP"
-
-
- ------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------
- ------------------------------------------------------------------------------------------
- desc = getEffectDescription(ENET_EFFECT_GEOMETRY_VEGETATION_FURPALM)
- desc.FileName = "ltransport_ground.smd"
- desc.effectUsageType = ENEUT_GENERIC
- desc.Geometry.isCollisionable = true
- changeEffect(ENET_LTRANSPORT_GROUND,desc)
-